/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ee.cybertron.energon.util;

import com.ee.cybertron.energon.beans.VistaMensajes;
import javax.el.ValueExpression;
import javax.faces.application.Application;
import javax.faces.context.FacesContext;

/**
 *
 * @author stevenziggiz
 */
public class Mensajes {
    /**
     * Agrega un mensaje de error para mostrar de manera global en pantalla
     * Este mensaje es ROJO
     * @param mensaje String
     */
    public static void agregarError( String mensaje )
    {
        VistaMensajes vista= (VistaMensajes) getBeanDeContexto("vistaMensajes");
        vista.setMensaje(mensaje, VistaMensajes.TIPO.ERROR);
    }   //agregarError

    /**
     * Agrega un mensaje informativo para mostrar de manera global en pantalla
     * Este mensaje es verde.
     * @param mensaje String
     */
    public static void agregarInfo( String mensaje )
    {
        VistaMensajes vista= (VistaMensajes) getBeanDeContexto("vistaMensajes");
        vista.setMensaje(mensaje, VistaMensajes.TIPO.INFORMACION);
    }   //agregarInfo
    
    /**
     * Agrega un mensaje informativo para mostrar de manera global en pantalla
     * Este mensaje es verde.
     * @param mensaje String
     */
    public void agregarInfo2( String mensaje )
    {
        VistaMensajes vista= (VistaMensajes) getBeanDeContexto("vistaMensajes");
        vista.setMensaje(mensaje, VistaMensajes.TIPO.INFORMACION);
    }   //agregarInfo

    /**
     * Agrega un mensaje de error a modo de advertencia para mostrar de manera global en pantalla
     * Este mensaje es amarillo.
     * @param mensaje
     */
    public static void agregarErrorAdvertencia( String mensaje ){
        VistaMensajes vista= (VistaMensajes) getBeanDeContexto("vistaMensajes");
        vista.setMensaje(mensaje, VistaMensajes.TIPO.ADVERTENCIA);
    }   //agregarErrorAdvertencia

    /**
     * Agrega un mensaje de error fatal.
     * Este tipo de mensaje, levanta un popup y bloquea el IU.
     * Sólo debe usarce cuando ocurren excepciones inesperadas
     * @param mensaje String
     */
    public static void agregarErrorFatal( String mensaje ){
        VistaMensajes vista= (VistaMensajes) getBeanDeContexto("vistaMensajes");
        vista.setMensajeFatal(mensaje, VistaMensajes.TIPO.ERROR_FATAL);
    }   //agregarErrorFatal

    /**
     * Método que retorna el bean del FacesContext.
     * Obtiene el valor del bean mediante los métodos específicos para <code>JSF 1.2</code>
     * @param nombre_bean Nombre del bean sin necesidad de escribirlo entre #{...}
     * @return Object con el bean.
     */
    private static Object getBeanDeContexto(String nombre_bean) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        Application app = facesContext.getApplication();
        ValueExpression expression = app.getExpressionFactory().createValueExpression(facesContext.getELContext(),
                String.format("#{%s}", nombre_bean),
                Object.class);
        return expression.getValue(facesContext.getELContext());
    }
}
